@@ -804,7 +804,6 @@ def member_activity_list(request):  | 
            ||
| 804 | 804 | 
                count = logs.count()  | 
            
| 805 | 805 | 
                logs, left = pagination(logs, page, num)  | 
            
| 806 | 806 | 
                logs = [log.admindata for log in logs]  | 
            
| 807 | 
                - print logs  | 
            |
| 808 | 807 | 
                     return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
               | 
            
| 809 | 808 | 
                'logs': logs,  | 
            
| 810 | 809 | 
                'left': left,  | 
            
                @@ -937,4 +936,36 @@ def member_activity_create(request):  | 
            ||
| 937 | 936 | 
                activity_state=activity_state  | 
            
| 938 | 937 | 
                )  | 
            
| 939 | 938 | 
                 | 
            
| 940 | 
                - return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功')  | 
            |
| 939 | 
                + return response(200, 'MemberActivityInfo Create Success', u'会员活动创建成功')  | 
            |
| 940 | 
                +  | 
            |
| 941 | 
                +def member_activity_share_list(request):  | 
            |
| 942 | 
                +    brand_id = request.POST.get('brand_id', settings.KODO_DEFAULT_BRAND_ID)
               | 
            |
| 943 | 
                +    admin_id = request.POST.get('admin_id', '')
               | 
            |
| 944 | 
                +    activity_id = request.POST.get('activity_id', '')
               | 
            |
| 945 | 
                +    page = int(request.POST.get('page', 1))
               | 
            |
| 946 | 
                +    num = int(request.POST.get('num', 20))
               | 
            |
| 947 | 
                +  | 
            |
| 948 | 
                + if brand_id != settings.KODO_DEFAULT_BRAND_ID:  | 
            |
| 949 | 
                + return response(ProductBrandStatusCode.BRAND_NOT_MATCH)  | 
            |
| 950 | 
                +  | 
            |
| 951 | 
                + try:  | 
            |
| 952 | 
                + administrator = AdministratorInfo.objects.get(admin_id=admin_id, user_status=AdministratorInfo.ACTIVATED, status=True)  | 
            |
| 953 | 
                + except AdministratorInfo.DoesNotExist:  | 
            |
| 954 | 
                + return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)  | 
            |
| 955 | 
                +  | 
            |
| 956 | 
                + logs = MemberActivityGroupShareInfo.objects.filter(activity_id=activity_id, status=True)  | 
            |
| 957 | 
                +  | 
            |
| 958 | 
                +    total_integral = logs.aggregate(Sum('integral'))['integral__sum']
               | 
            |
| 959 | 
                +  | 
            |
| 960 | 
                +    logs = logs.values('share_user_id').annotate(integral_sum=Sum('integral'), group_count=Count('open_gid'), user_count=Count('click_user_id')).order_by('-user_count')
               | 
            |
| 961 | 
                +  | 
            |
| 962 | 
                + count = logs.count()  | 
            |
| 963 | 
                + logs, left = pagination(logs, page, num)  | 
            |
| 964 | 
                +  | 
            |
| 965 | 
                +    return response(200, 'Get Member Activity Record Success', u'获取会员活动成功', data={
               | 
            |
| 966 | 
                + 'logs': list(logs),  | 
            |
| 967 | 
                + 'count': count,  | 
            |
| 968 | 
                + 'left': left,  | 
            |
| 969 | 
                + 'total_integral': total_integral  | 
            |
| 970 | 
                + })  | 
            |
| 971 | 
                +  | 
            
                @@ -331,6 +331,8 @@ urlpatterns += [  | 
            ||
| 331 | 331 | 
                url(r'^admin/member/activity/details$', admin_views.member_activity_details, name='member_activity_details'),  | 
            
| 332 | 332 | 
                url(r'^admin/member/activity/update$', admin_views.member_activity_update, name='member_activity_update'),  | 
            
| 333 | 333 | 
                url(r'^admin/member/activity/create$', admin_views.member_activity_create, name='member_activity_create'),  | 
            
| 334 | 
                + url(r'^admin/member/activity/share/list$', admin_views.member_activity_share_list, name='member_activity_share_list'),  | 
            |
| 335 | 
                +  | 
            |
| 334 | 336 | 
                ]  | 
            
| 335 | 337 | 
                 | 
            
| 336 | 338 | 
                urlpatterns += [  | 
            
                @@ -0,0 +1,24 @@  | 
            ||
| 1 | 
                +# -*- coding: utf-8 -*-  | 
            |
| 2 | 
                +# Generated by Django 1.11.26 on 2020-12-04 10:31  | 
            |
| 3 | 
                +from __future__ import unicode_literals  | 
            |
| 4 | 
                +  | 
            |
| 5 | 
                +from django.db import migrations, models  | 
            |
| 6 | 
                +  | 
            |
| 7 | 
                +  | 
            |
| 8 | 
                +class Migration(migrations.Migration):  | 
            |
| 9 | 
                +  | 
            |
| 10 | 
                + dependencies = [  | 
            |
| 11 | 
                +        ('member', '0023_memberactivityinfo_activity_state'),
               | 
            |
| 12 | 
                + ]  | 
            |
| 13 | 
                +  | 
            |
| 14 | 
                + operations = [  | 
            |
| 15 | 
                + migrations.AlterField(  | 
            |
| 16 | 
                + model_name='memberactivityinfo',  | 
            |
| 17 | 
                + name='activity_state',  | 
            |
| 18 | 
                + field=models.IntegerField(choices=[(0, '\u8349\u7a3f'), (1, '\u5df2\u53d1\u5e03'), (2, '\u4e0b\u7ebf')], db_index=True, default=0, help_text='\u6d3b\u52a8\u72b6\u6001', verbose_name='activity_state'),  | 
            |
| 19 | 
                + ),  | 
            |
| 20 | 
                + migrations.AlterUniqueTogether(  | 
            |
| 21 | 
                + name='memberactivitygroupshareinfo',  | 
            |
| 22 | 
                +            unique_together=set([('activity_id', 'share_user_id', 'click_user_id', 'open_gid', 'brand_id')]),
               | 
            |
| 23 | 
                + ),  | 
            |
| 24 | 
                + ]  | 
            
                @@ -540,6 +540,10 @@ class MemberActivityGroupShareInfo(BaseModelMixin):  | 
            ||
| 540 | 540 | 
                class Meta:  | 
            
| 541 | 541 | 
                verbose_name = _(u'会员活动群组分享信息')  | 
            
| 542 | 542 | 
                verbose_name_plural = _(u'会员活动群组分享信息')  | 
            
| 543 | 
                +  | 
            |
| 544 | 
                + unique_together = (  | 
            |
| 545 | 
                +            ('activity_id', 'share_user_id', 'click_user_id', 'open_gid', 'brand_id'),
               | 
            |
| 546 | 
                + )  | 
            |
| 543 | 547 | 
                 | 
            
| 544 | 548 | 
                def __unicode__(self):  | 
            
| 545 | 549 | 
                return '%d' % self.pk  |